Contenidos

logo
  • Instalación de software
  • Ventajas/Desventajas de R y RStudio
  • Entorno de trabajo
  • Objetos de trabajo
  • Instalación de Paquetes estadísticos
  • Tipos de Variables
  • Valores Especiales
  • Recursos en línea
  • Importar Datos de Fuentes Externas
  • Estadística Descriptiva Básica
  • Configuración de datos

Conceptos Previos- Funciones

“To understand computations in R, two slogans are helpful: Everything that exists is an object. Everything that happens is a function call.”- John Chambers


  • Una función define relaciones entre distintos objetos
  • Permite automatizar tareas
  • Las funciones pueden contener otras funciones (“anidadas”/“nested”)
  • Hay funciones tan complejas que requieren muchos argumentos, referencias, condiciones, etc.
  • Toda función tiene un nombre, un argumento (puede estar definido por defecto) y un cuerpo
  • Los resultados de las operaciones pueden arrojar advertencias (para considerar) o errores (la ejecución para). Gran parte de los errores y advertencias están programadas, pueden ser buscadas en la red.

Conceptos Previos- Paquetes Estadísticos

  • Una de las características que hace la diferencia entre otros programas.
  • Un paquete estadístico contiene distintas funciones (comandos).
  • Son extensiones de R: Contienen código, datos y documentación estandarizada.
  • Los paquetes en general se alojan en repositorios (CRAN, MRAN, GitHub, and BioConductor).
  • Las librerías son un directorio local que contiene los paquetes instalados
  • En general las librerías tienen archivos de documentación similares a formato Latex, con información de sus versiones, la fuente, etc.

Conceptos Previos- Repositorio CRAN

  • Abra Rstudio y presione Alt + T + G (WIN) o Cmd+, [comma] (Chrome, Desktop), Option+Cmd+, [comma] (Safari, FireFox) (MAC)

Instalación de Paquetes Estadísticos

  • Abra Rstudio, cree un proyecto de nombre “Curso 2”,
  • Abra un Script, escriba en él y ejecútelo (Run)
set.seed(4321) #Creamos una semilla para la generación de datos, 
#de manera que los podamos reproducir
datos<- rnorm(200) #Generamos 200 números aleatorizados 
#siguiendo distribución normal.
promedio_curso <- function(x) {sum(x)/length(x)} #creamos una función que suma 
#datos y los divide por su largo
print(promedio_curso(datos))
## [1] 0.05299248
print(sum(datos)) #la suma de los datos
## [1] 10.5985
print(length(datos)) #el largo de los datos
## [1] 200
.libPaths() # get library location
## [1] "C:/Users/andre/Documents/R/win-library/3.6"
## [2] "C:/Program Files/R/R-3.6.2/library"
  • Algo que hacíamos en 2 ejecuciones, lo hicimos en una

Instalación de Paquetes Estadísticos(2)

  • Ingrese en la consola o en un Script, la instalación del paquete “dplyr”, install.packages("dplyr")
  • Habiendo hecho esto, usted está instalando el paquete, pero no lo ha activado ni lo ha abierto
  • Para activarlo momentáneamente (library(dplyr)).
    • Muchos autores no recomiendan “require”, sino “library” (https://stackoverflow.com/q/5595512/9975513)
    • Una ventaja de require entrega un valor binario si el paquete se cargó o no (VERDADERO/FALSO)
    • La amenaza es que si uno corre líneas de código, se obvia el error
    • Esto puede llevar a resultados erróneos (ej: aplicando funciones de otros paquetes con mismo nombre)
  • Existen otros argumentos de la función install.packages:
  • Ubicación de la librería, Repositorio (CRAN, MRAN, Bioconductor,local, etc.), instalar paquetes dependientes, etc.
  • Si no conoce el origen de una función, puede consultarlo anteponiendo “?” o utilizando la función help()
  • A veces, los paquetes estadísticos generan contradicciones entre sí (ej: plyr y dplyr). Para ello, se recomienda desactivar o “despegar” un paquete (detach(package:[NOMBRE_PAQUETE]))

Objetos de Trabajo

Almacenan datos, tienen distintas estructuras que le dan soporte. A continuación presentaremos las más básicas, junto con sus propiedades:

Vectores

  • Aloja elementos/valores del mismo tipo (Posteriormente podrá ver los Tipos de Variables)
  • De ahí que elementos de distintos tipos serán coercionados a adoptar el tipo de caracter
  • Permite tomar un rango de ellos, excluir otros elementos, especificar los que se obtendrán mediante un criterio lógico (VERDADERO/FALSO).
  • Son el fundamento de muchas otras estructuras.
  • Permite ser ordenado
  • Si se utilizan vectores de distinto largo, las funciones pueden reciclarse
  • Constructor de vectores, combine: c()

Factores

  • Son vectores que alojan variables de tipo categórico u ordinal
  • La ventaja es que las etiquetas se graban sólo una vez, en niveles (levels())
  • Por tanto, aloja un vector con valores enteros, dependiendo de la cantidad de valores únicos
  • Otra es que permite informar a otros algoritmos respecto al tipo de datos que alojan (ej. regresión logística) -as.character()

Listas

  • Contienen elementos de distintos tipos, hasta objetos, de manera ordenada
  • De ahí que pueden estar anidados entre ellos
  • Los elementos pueden no estar relacionados entre sí
  • La función list() permite generarla. Es opcional agregarle nombres a cada elemento, pero permite llamarlos con mayor facilidad.

Matrices

  • Forma tabular, bidemnsional y de naturaleza homogénea
  • Coarta su formato si se incorporan elementos de distinto tipo
  • Admite nombres a sus dimensiones (dimnames)
  • Generalmente numéricos
  • [x,y]
  • Por defecto, de arriba a abajo (bycol=T)

Array

  • Tabla multidimensional
  • Tiene filas, columnas y otras capas

Data frame

  • Marco/Trama/Conjunto de Datos
  • Bidimensional
  • Heterogéneas
  • Similar a una base de datos .csv o una planilla excel (aunque más restringida)
  • Los nombres de las columnas no pueden estar vacíos (el programa los llenará)
  • Es un dataset que está organizado en columnas (cada columna con su nombre)
  • Cada columna debe contener valores del mismo tipo
  • Similar a las bases de datos de SAS o SPSS
  • Se entiende como una lista de vectores o factores con la misma extensión (largo length() de columna 1 será el mismo que el del resto de las columnas)
  • Propiedades names(), colnames(), rownames(), is.data.frame(), str(), attr(), dim()

Tibbles

  • Una nueva configuración de un data frame
  • No fuerza a las columnas de caracteres a comportarse como factores
  • No entrega nombres de columnas automáticamente
  • Más sensible: da más advertencias
  • Es más cauto al reciclar vectores

Ejemplos, Objetos de Trabajo

  • ¿Lista o vector?
c(4,6,8,10)
## [1]  4  6  8 10

-¿Lista o vector?

c("d",6,"v",10)
## [1] "d"  "6"  "v"  "10"
  • Aquí vemos que una matriz puede tener 2 atributos: número de filas y número de columnas. ¿Cómo ordena los datos por defecto una matriz?
matrix(1:4, nrow = 2, ncol = 2) #ATRIBUTOS DE UNA MATRIZ,tener en cuenta para después
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
matrix(1:4, nrow = 2, ncol = 2)*matrix(c(46,57,32,88),nrow=2)
##      [,1] [,2]
## [1,]   46   96
## [2,]  114  352
  • Matriz o Array ¿?
x<-array(c(52,41,25,85,136,128,28,59,65,16,1,133),c(2,3,2))
dimnames(x)<-list(c("H","M"),c("desempleado","empleado","inactivo"),c("santiago","valparaiso"))
print(x)
## , , santiago
## 
##   desempleado empleado inactivo
## H          52       25      136
## M          41       85      128
## 
## , , valparaiso
## 
##   desempleado empleado inactivo
## H          28       65        1
## M          59       16      133
##... mmmm... dimnames...¿qué serán?

Indexación, Subconjuntos y Atributos, Objetos de Trabajo

  • Subset
print(c(1,2,3,4,5))[3]
## [1] 1 2 3 4 5
## [1] 3
#¿Y ahora?, ¿qué llama la atención?
print(c(1,2,3,4,5)[3:6])
## [1]  3  4  5 NA
#¿por qué aparece un error?
tryCatch(print(c(1,2,3,4,5)[3:6,6]), error = function(e) "ERROR") ## una función para que en caso de que arroje error, no interrumpa la ejecución del los scripts.
## [1] "ERROR"

Indexación, Subconjuntos y Atributos, Objetos de Trabajo 2

  • Propiedades de una base de datos data.frame
    • $ para seleccionar una columna de una base de datos
    • [,] que nos permiten visualizar determinados elementos de una base de datos
data("women")
dimnames(women)
## [[1]]
##  [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10" "11" "12" "13" "14" "15"
## 
## [[2]]
## [1] "height" "weight"
str(women)
## 'data.frame':    15 obs. of  2 variables:
##  $ height: num  58 59 60 61 62 63 64 65 66 67 ...
##  $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
names(women)
## [1] "height" "weight"
women$height
##  [1] 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
women[3,1]
## [1] 60
women[3,"height"]
## [1] 60
  • Ejemplo de un Tibble (requiere instalar un paquete). Véanlo como data.frame (as.data.frame(cbind(sexo=rep("H","M",8),sexo=rep(c("H","M","M","H"),2),tarea=c("auto","casa", "barrio", "cohete","hipopotamo","nieve","hijo","sal")))), vean sus propiedades, ¿qué cambió?
if(!require(tibble)){install.packages("tibble")};tibble::as_tibble(cbind(sexo=rep("H","M",8),sexo=rep(c("H","M","M","H"),2),objeto=c("auto","casa", "barrio", "cohete","hipopotamo","nieve","hijo","sal")))
## Loading required package: tibble
## Warning: `as_tibble.matrix()` requires a matrix with column names or a `.name_repair` argument. Using compatibility `.name_repair`.
## This warning is displayed once per session.
## # A tibble: 8 x 3
##   sexo  V2    objeto    
##   <chr> <chr> <chr>     
## 1 H     H     auto      
## 2 H     M     casa      
## 3 H     M     barrio    
## 4 H     H     cohete    
## 5 H     H     hipopotamo
## 6 H     M     nieve     
## 7 H     M     hijo      
## 8 H     H     sal

Niveles de Medición

Niv. Medición Clasificación Orden Un. Medida Constante Cero Absoluto
Nominal X
Ordinal X X
Intervalo X X X
Razón X X X X


  • Variables categóricas, cualitativas, no métricas
    • Nominales
    • Ordinales
  • Variables cuantitativas, métricas
    • De Intervalo
    • Razón o Proporción
    • Continuas
    • Discretas

Niveles de Medición (continuación)

\(^{Fuente: Ritchey, 2002, p. 47}\)

Tipos de Variables

Existen 5 tipos de variables (modos) básicas o “atómicas” en R (dependiendo del tipo de valores que se le asigna a cada objeto). Estos determinan cómo los datos serán formateados, mostrados y tratados (typeof([OBJETO]) y class([OBJETO]), por si quiere saber más enlace y enlace2).

  • Numérico (numeric): valores numéricos, incluye decimales. {2,1.5,3}

  • Entero (integer): números enteros, no incluye decimales. {4,8,34}

  • Caracter (character): Variables Cadena (alfanuméricas). "andres", "pedro"

  • Lógico (logical): valores lógicos, verdadero o falso. {TRUE/FALSE, 0/1}

Además, es posible tratar las variables (“casting”) como factores. En este caso, las variables corresponden a valores enteros que tienen etiquetas para los distintos valores. Por otra parte, existen estructuras más complejas (tipo abstracto), como las fechas (dttm, POSixct), que provienen de estas formas básicas y que van más allá del alcance de este curso

Otros Valores Especiales

  • NA (no disponibles), puede entenderse como valores perdidos
  • La infinidad se entiende como Inf
  • NaN es un valor indefinido NaN (not a number)
  • Sólo hay una propiedad NULL, similar a largo 0
is.finite(c(2,3,4,5)/c(0,1)) # se recicla
## [1] FALSE  TRUE FALSE  TRUE
is.infinite(matrix(c(1,2,5),nrow=2,ncol=2)/matrix(c(0,4),nrow=2,ncol=2))  #va a reciclar la primera observación
##       [,1]  [,2]
## [1,]  TRUE  TRUE
## [2,] FALSE FALSE
is.nan(c(2/5,6/6,0/0))
## [1] FALSE FALSE  TRUE
is.na(c(1,2,NA,4,5))
## [1] FALSE FALSE  TRUE FALSE FALSE
complete.cases(c(1,2,NA,4,5))
## [1]  TRUE  TRUE FALSE  TRUE  TRUE
anyNA(c(1,2,NA,4,5))
## [1] TRUE
anyNA(c(1,2,3,4,5))
## [1] FALSE
is.null(c(1,2,3,4,5))
## [1] FALSE
is.null(c(1,2,NA,4,5))
## [1] FALSE
is.null(c())
## [1] TRUE

Ejercicio 1

Juego de Cultura - La regla que aplicará es la siguiente: “a todas las palabras que digan deberán agregarle la frase ‘por celular’” - Sus compañeros dicen lo siguiente: c("Debo comprar tickets para mañana", "Qué bueno sería juntarnos", "Voy a preparar un jugo") - La función paste0 permite pegar elementos sin separación

objeto <- "silencio"
paste0("Simón dice", objeto)
## [1] "Simón dicesilencio"
#considere que no agrega espacios, por lo que debe agregarlos usted
paste0("Simón dice", ", \'", objeto,"\'")
## [1] "Simón dice, 'silencio'"
  • Genere un objeto con las palabras utilizadas por sus compañeros de juego
  • Agregue la frase “por celular”

Ejercicio 2

  • Cargue una base de datos de R llamada “ChickWeight”
  • Obtenga la suma del peso de los primeros 5 pollos
  • OPC1. Obtenga la media de todos los pollos (use recursos en-línea para aprender)
  • ¿Llegó a obtener un peso de 121.8183 kgs.)
  • OPC2. obtenga el resultado usando comas enseparador de decimales (outdec en internet)
  • OPC3. ¿Y qué tal todo esto con la desviación estandar el mismo separador de decimales?

Ejercicio 3

  • Usted ya instaló el paquete “dplyr”
  • El paquete dplyr contiene múltiples funciones y bases de datos (https://cran.r-project.org/web/packages/dplyr/dplyr.pdf)
  • Llame a la librería
  • Cargue la base de datos “starwars”
  • (Podría faltar el paquete magrittr, si el programa se lo pide, ¿sabría cómo instalarlo?)
  • Ejecute este código: starwars %>% dplyr::group_by(eye_color) %>% dplyr::summarise(promedio_altura_por_color_de_ojos=mean(height, na.rm=T))

Fuentes

Prueba

Favor dirigirse al siguiente enlace y contestar